iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
IT 管理

Playwright + Test Design + AI Agent:自動化測試實戰系列 第 23

第 23 天:意念修煉 - Spec-Kit 規格驅動開發

  • 分享至 

  • xImage
  •  

昨天介紹了契約測試 (Contract Testing),今天我們將把測試思維提升到另一個層次:規格驅動開發 (Spec-Driven Development, SDD)。我們會透過 GitHub 的開源工具 spec-kit,打造一個簡單的使用者註冊服務,並由 AI 根據規格自動產生單元測試、整合測試與 E2E 測試。我們會透過分階段完成並且控制任務的數量,來逐漸完成開發流程和控制 token 的消耗量。

內功心法:什麼是規格驅動開發 (SDD)

規格驅動開發(Spec-Driven Development, SDD)是一種將正式的產品規格檔案作為整個開發流程核心的方法論。不同於傳統的程式碼先行,SDD 強調在動手寫程式碼之前,先定義好專案的目標、動機與技術細節。spec-kit 的出現,正解決 SDD 的最大痛點:如何將一份靜態的規格檔案,自動轉化為可執行的程式碼?他的核心是:它將規格檔案視為活的資產(Living Document),透過 AI Agent,它能自動從這份規格檔案中,產生 API Client、資料模型(Model)、型別定義(Type),甚至是測試腳本的骨架。

招式演練:spec-kit 的三部曲

安裝 spec-kit

spec-kit 是一個 Python 工具,但你可以透過 uvx 這個工具,直接在你的專案中安裝。這條指令會自動為你建立一個包含所有必要範本和組態的專案目錄,以本篇文章的專案「examples-order-spec-kit」

uvx --from git+https://github.com/github/spec-kit.git specify init <專案名稱>

如果沒有指定 AI 模型,在初始化專案的時候,會需要選擇你的 AI assistant,這篇文章主要會以 GitHub Copilot 為主,下一步會選擇使用的 script type,如果是 Linux 基礎的 OS 就選擇 sh,如果是 windows 就選擇 ps (PowerShell)。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442jzhcaDUPIX.png

如果建立成功則會看到 "Project ready" 的字,並且告訴你剛剛的設定和接下來的有哪些命令可以使用。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442QiacOjpsiu.png

但如果一開始不想創建專案,可以透過下列指令安裝 spec-kit 然後再使用 specify init 建立專案,這跟上面是一樣的。

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

建立專案

specify init <PROJECT_NAME>
specify check

spec-kit 的三部曲

spec-kit 的開發流程可以分為下列幾個階段,透過 GitHub Chat 輸入指令的方式,驅動整個開發流程。

建立專案核心原則與準則,是團隊的「開發價值觀」或「工程守則」。

/constitution 建立一份以「程式品質、測試標準、使用者體驗一致性、效能需求」為核心的原則文件。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442IbQuMi4tso.png

第一部曲:specify - 意念先行,撰寫規格

這是整個流程的起點。我們會使用 /specify 指令,向 AI Agent 提供一個高層次的需求描述。

你的指令:

/specify 建立一個使用者註冊服務,包含電子郵件驗證和密碼加密。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442PSIYnQeu24.png

AI 產出:AI Agent 會根據你的描述,生成一份詳細的規格檔案,包含 API 端點、資料模型、驗收條件和錯誤處理。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442UAStzFt1wZ.png

https://ithelp.ithome.com.tw/upload/images/20251006/20169442I3KS4NjpYo.png

第二部曲:plan - 內力運轉,制定技術藍圖

有了規格檔案後,我們需要一個技術藍圖。我們會使用 /plan 指令,告訴 AI Agent 我們選擇的技術棧(例如:使用 TypeScript、Playwright 和 PostgreSQL)。

你的指令:

/plan 根據規格檔案,建立一個基於 TypeScript 和 Playwright 的測試專案。

AI 產出:AI Agent 會根據你的技術選擇,生成詳細的技術實作規劃,包括專案結構、所需的函式庫和架構設計。

第三部曲:tasks - 招式拆解,生成執行清單** 這是 AI 真正動手寫程式碼的階段。我們會使用 /tasks 指令,讓 AI 將前面生成的規劃,拆解成一個個可執行的任務清單。

你的指令:

/tasks 根據規劃,拆解出測試程式碼的任務清單。

https://ithelp.ithome.com.tw/upload/images/20251006/20169442eqKrpcJrAB.png

AI 產出:AI Agent 會生成一個任務清單,例如「建立 UserRepository」、「撰寫 POST /register 的測試案例」等,這些任務可以直接交給 AI 執行。

執行實作

/implement

https://ithelp.ithome.com.tw/upload/images/20251006/20169442OOQoJfnfsM.png

完整的建立流程

# 1. 初始化專案
uvx --from git+https://github.com/github/spec-kit.git specify init examples-order-spec-kit
cd login-order-system

# 2. 建立專案憲章
/constitution 建立以品質、測試、UX、效能為核心的原則

# 3. 撰寫規格
/specify 建立登入與訂單管理的 API 系統(含 JWT)

# 4. 產生技術藍圖
/plan 使用 TypeScript、Express、Prisma、Playwright

# 5. 生成任務
/tasks 根據規劃拆解實作項目

# 6. 執行實作
/implement

秘笈傳授:最佳實務

spec-kit 會根據我們的規範和規格,列出任務並逐步完成。在使用過程中,有幾個關鍵的最佳實務可以確保流程更順暢:

  1. 在使用 Spec-kit 建議採用小步慢跑的方式,檢查每個階段的產出,例如:specs/001-xxx 資料夾下面的 plan.md、spec.md、tasks.md,特別是 tasks 可以適當的調整與縮減。
  2. 避免 token 數的消耗是控制成本的關鍵。透過精簡指令和分階段執行,可以有效管理 AI 模型的消耗。
  3. 定義明確的規範:為了讓 AI 的產出符合團隊的標準,建議根據不同的專案(如前後端),定義明確的規範檔案,例如:
規範檔案 用途
specs/frontend-constitution.md 前端開發原則(UX / Accessibility)
specs/backend-constitution.md 後端 API 標準(Security / Logging / Contract)
specs/testing-constitution.md 測試規範(Coverage / CI / Reporting)

此外,還有兩個重要的指令可以幫助你更有效地使用 Spec-Kit:

/clarify:釐清「規格」中的模糊地帶
/clarify 是一個互動式的指令,它的主要功能是檢查你撰寫的 /specify 規格檔案,找出其中所有可能存在的模糊、不完整或有歧義的地方,並透過提問的方式,幫助你補充細節。這就像在動手畫藍圖之前,先確保建築師和客戶之間沒有任何誤解。

/analyze:檢查「規格、計畫、任務」之間的一致性
/analyze 是一個靜態分析的指令,它的功能是檢查整個 SDD 工作流程中的所有檔案,確認它們之間是否一致、完整且符合規範。它會確保你的技術方案能完整實現所有功能,並且所有任務都與規劃相符,讓你能在 AI 開始大規模生成程式碼之前,發現並修復所有潛在問題。

收功:今日總結

我們學習了如何透過 spec-kit 這個開源工具,將「規格驅動開發」的理念推向了極致。它將一個抽象的規格檔案,透過 AI Agent 的協作,產生程式碼與測試。不過,在每個階段都需要調整,想要一步到位可能還需要調整 spec 文件,不過,隨著 spec-kit 工具和 AI Agent 慢慢的完善,或許將來只需要告訴 AI 團隊的規範就可以產生相對的功能和測試。

參考資料

  1. https://github.com/github/spec-kit

上一篇
第 22 天:繡花針:從 OpenAPI 規格到程式碼生成
下一篇
第 24 天:氣化萬物 - 打造 Mock 測試資料的內功心法
系列文
Playwright + Test Design + AI Agent:自動化測試實戰27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言